﻿#pragma once

#include "../common/mengyu_def.h"
#include "input_handler.h"

class IpcServer {
public:
    IpcServer();
    ~IpcServer();

    // 启动服务器
    bool start();
    // 停止服务器
    void stop();

private:
    // 客户端处理线程
    static void _handleClient(HANDLE hPipe,std::shared_ptr<InputHandler> input_handler);
    // 接受连接的线程函数
    bool _acceptConnections();

    static bool _onSendLog(HANDLE hPipe,const char* data);
    static bool _onGetCandidate(HANDLE hPipe,std::shared_ptr<InputHandler>& input_handler, const char *data,int data_len);
    static bool _onFlush(HANDLE hPipe,std::shared_ptr<InputHandler>& input_handler); //清空缓存，返回所有的缓存的字符，不显示候选列表，直接输出
    static bool _onShowUI(HANDLE hPipe,std::shared_ptr<InputHandler>& input_handler); //显示UI
private:
    bool _running;  // 服务器运行标志
    std::shared_ptr<InputHandler> _input_handler; // 输入处理器
};